package com.foreknow.demo6;

import java.util.Scanner;

/**
 * 创建一个学生类，该类的属性包含(姓名，学号，成绩)，设计一个方法按照成绩从高到低的顺序输出姓名，学号，成绩
 * 1. 发现类以及类中的属性
 * 2. 排序
 * 3. 需要创建三个学生对象并将对象保存到数组中，然后调用方法来实现排序
 */
public class Student {
    //1. 定义属性并生成get/set
    private String name;
    private int cno;
    private int score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getCno() {
        return cno;
    }

    public void setCno(int cno) {
        this.cno = cno;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
//2. 定义一个排序的方法(有没有返回值类型以及参数) 作用：排序{
    //   for(){  控制总的比较次数
    //     for(){  相邻的两个元素进行比较     [Student对象 Student对象 Student对象]
    //          判断(数组[i].getScore()>数组[i+1].getScore()) {
    //              交换位置
    //          }
    //     }
    //   }
    // }

    public Student[] sort(Student[] ss) {
        Student temp = null;
        for(int i = 1;i < ss.length;i++) { //控制总的比较次数
            //相邻的两个元素比较
            for(int j = 0;j < ss.length-i;j++) {
                if(ss[j].getScore() < ss[j+1].getScore()) {
                    temp = ss[j];
                    ss[j] = ss[j+1];
                    ss[j+1] = temp;
                }
            }
        }
        return ss;
    }


    public static void main(String[] args) {
        //3. 从控制台上录入三次学生的信息并以Student对象的方式保存到数组中，然后调用排序的方法，最后输出结果
        Scanner input = new Scanner(System.in);
        Student[] students = new Student[3];
        for(int i = 0;i<3;i++){
            Student s = new Student();
            System.out.println("请输入姓名");
            String name = input.next();
            System.out.println("请输入学号");
            int cno = input.nextInt();
            System.out.println("请输入成绩");
            int score = input.nextInt();
            s.setName(name);
            s.setCno(cno);
            s.setScore(score);
            students[i] = s;  //将s对象保存到students数组中
        }
        //调用sort方法排序  注意：调用哪个类中的方法，就要先创建哪个类的对象
        Student student = new Student();
        Student[] resultSort = student.sort(students);//调用sort方法并将方法的结果赋值给resultSort

        //遍历输出排序的结果
        for(int i = 0;i<resultSort.length;i++){
            Student s = resultSort[i]; //从数组中获取某一个元素并赋值给s
            //System.out.println(resultSort[i].getName()+"--"+resultSort[i].getCno()+"--"+resultSort[i].getScore());
            System.out.println(s.getName()+"--"+s.getCno()+"--"+s.getScore());
        }

    }
}
